package com.smart.community.work.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 保洁区域查询DTO
 * 
 * 严格按照《Java后端SpringBoot代码开发规范_重构版.md》DTO规范实现：
 * - 使用@Data注解：自动生成getter/setter方法
 * - 参数验证：使用JSR-303注解进行参数验证
 * - 完整注释：所有字段都有完整的JavaDoc注释
 * - 序列化支持：实现Serializable接口
 * - 字段命名：使用驼峰命名法
 * - 类型安全：使用具体的类型而不是Object
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 * @version 1.0.0
 */
@Data
@Schema(description = "保洁区域查询参数")
public class CleaningAreaQueryDTO {

    @Schema(description = "页码", example = "1", required = true)
    @NotNull(message = "页码不能为空")
    @Min(value = 1, message = "页码必须大于0")
    private Integer pageNum = 1;

    @Schema(description = "每页大小", example = "10", required = true)
    @NotNull(message = "每页大小不能为空")
    @Min(value = 1, message = "每页大小必须大于0")
    private Integer pageSize = 10;

    @Schema(description = "区域名称", example = "大厅")
    private String areaName;

    @Schema(description = "区域类型", example = "公共区域")
    private String areaType;

    @Schema(description = "社区ID", example = "1")
    private Long communityId;

    @Schema(description = "状态", example = "1")
    private Integer status;

    @Schema(description = "物业公司ID列表", example = "[1, 2, 3]")
    private List<Long> propertyCompanyIds;

    @Schema(description = "负责人用户ID", example = "100")
    private Long responsibleUserId;
}
